package com.qin.service.impl;

import com.qin.dao.RoleMapper;
import com.qin.entity.Role;
import com.qin.service.RoleService;
import com.qin.vo.RoleVo;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;


import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

@Service
@Transactional
public class RoleServiceImpl implements RoleService {

    @Resource
    private RoleMapper roleMapper;


    /**
     * 查询角色列表
     * @param roleVo
     * @return
     */
    public List<Role> findRoleList(RoleVo roleVo) {
        return roleMapper.findRoleList(roleVo);
    }

    /**
     * 添加角色
     * @param role
     * @return
     */
    public int addRole(Role role) {
        return roleMapper.addRole(role);
    }

    /**
     * 修改角色
     * @param role
     * @return
     */
    public int updateRole(Role role){
        return roleMapper.updateRole(role);
    }

    /**
     * 删除角色
     * @param id
     * @return
     */
    public int deleteById(Integer id) {
        return roleMapper.deleteById(id);
    }

    /**
     * 保存菜单角色关系
     * @param ids
     * @param roleId
     * @return
     */
    public int saveRoleMenu(String ids, Integer roleId) {
        try {
            // 删除原有的菜单关系
            roleMapper.deleteRoleMenu(roleId);// 根据角色Id删除
            // 将ids拆分成数组
            String[] idsStr = ids.split(",");
            // 循环调用
            for (int i = 0; i < idsStr.length; i++) {
                // 调用保存菜单角色关系的方法
                roleMapper.addRoleMenu(roleId,idsStr[i]);
            }
            return 1;   // 成功
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0; //失败
    }

    /**
     * 查询所有角色列表
     * @return
     */
    public List<Map<String, Object>> findRoleListByMap() {
        return roleMapper.findRoleListByMap();
    }

    /**
     * 根据员工ID查询该员工拥有的角色列表
     * @param id
     * @return
     */
    public List<Integer> findEmployeeRoleByEmployeeId(Integer id) {
        return roleMapper.findEmployeeRoleByEmployeeId(id);
    }


}
